<?php

	try {
	    
		require_once '../../controller/controller.inc.php';
		$usuario->isAuthorizedView(Operacao::MANUTENCAO_OPERADORES);
		
	    $id = ( isset ( $_GET['id']) ) ? $_GET['id'] : null;
	    
	    $objeto = new Operador( $id );
	    
	    #variavel que mostra a opção de reativação
	    $reativacao = ( isset ( $_GET['reativacao']) )? TRUE : FALSE;
	     
	    //INICIO DAS ACOES --------------------
	    if (isset ($_POST["btnAcao"]))
	    {
	    	// Corrigindo dados do form
	    	
	    	if ($_POST['ddlPerfilID'] == 0) throw new Exception('Você deve escolher um Perfil.');
	    	
	    	$perfil_obj = new Perfil($_POST['ddlPerfilID']);

	    	// Comportamento (Perfil Comportamental) = Adminstrador
	    	// Não pode ter "Empresa" nem "Órgão" nem "Núcleo Gestor"
	    	if ($perfil_obj->perfilcomportamentalid == PerfilComportamental::Administrador) {
	    		if ($_POST['ddlEmpresaID'] != 0 || $_POST['ddlOrgaoID'] != 0 || $_POST['ddlNucleoGestorID'] != 0)
	    			throw new Exception('O Perfil "Administrador" não pode ter "Empresa" nem "Órgão" nem "Núcleo Gestor".');
	    	}
	    	
	    	// Comportamento (Perfil Comportamental) = Gabinete (Opção na página: "Núcleo Central")
	    	// Não pode ter "Empresa" nem "Órgão" nem "Núcleo Gestor"
	    	if ($perfil_obj->perfilcomportamentalid == PerfilComportamental::Gabinete) {
	    		if ($_POST['ddlEmpresaID'] != 0 || $_POST['ddlOrgaoID'] != 0 || $_POST['ddlNucleoGestorID'] != 0)
	    			throw new Exception('O Perfil "Núcleo Central" não pode ter "Empresa" nem "Órgão" nem "Núcleo Gestor".');
	    	}
	    	
	    	// Comportamento (Perfil Comportamental) = Núcleo Gestor
	    	// Não pode ter "Empresa". Tem que ter "Núcleo Gestor" e "Órgão". 
			if ($perfil_obj->perfilcomportamentalid == PerfilComportamental::NucleoGestor) {
				if ($_POST['ddlNucleoGestorID'] == 0 || $_POST['ddlOrgaoID'] == 0) throw new Exception('Você deve escolher um "Núcleo Gestor" e um "Órgão".');
				if ($_POST['ddlEmpresaID'] != 0) throw new Exception('O Perfil "Núcleo Gestor" não pode ter "Empresa".');
			}
	    	
			// Comportamento (Perfil Comportamental) = Órgão
			// Não pode ter "Núcleo Gestor" nem "Empresa". Tem que ter "Órgão".
	    	if ($perfil_obj->perfilcomportamentalid == PerfilComportamental::Orgao) {
				if ($_POST['ddlOrgaoID'] == 0) throw new Exception('Você deve escolher um "Órgão".');
				if ($_POST['ddlNucleoGestorID'] != 0 || $_POST['ddlEmpresaID'] != 0)
					throw new Exception('O Perfil "Órgão" não pode ter "Núcleo Gestor" nem "Empresa".');
			}
	    	
	    	// Comportamento (Perfil Comportamental) = Empresa (Opção na página: "Terceirizada")
	    	// Não pode ter "Órgão" nem "Núcleo Gestor". Tem que ter "Empresa".
	    	if ($perfil_obj->perfilcomportamentalid == PerfilComportamental::Empresa) {
	    		if ($_POST['ddlEmpresaID'] == 0) throw new Exception('Você deve escolher uma "Empresa".');
		    	if ($_POST['ddlNucleoGestorID'] != 0 || $_POST['ddlOrgaoID'] != 0)		    			throw new Exception('O Perfil "Terceirizada" não pode ter "Órgão" nem "Núcleo Gestor".');
	    	}

	    	if ( $_POST['ddlOrgaoID'] == 0 )
        		$_POST['ddlOrgaoID'] = NULL;
        		
        	if ( $_POST['ddlEmpresaID'] == 0 )
        		$_POST['ddlEmpresaID'] = NULL;
        		
        	if ( $_POST['ddlNucleoGestorID'] == 0 )
        		$_POST['ddlNucleoGestorID'] = NULL;
	        
	        switch($_POST["btnAcao"])
	        {
	            case "Salvar":	            	
	            	$objeto = new Operador($_POST['id']);	            	        		
	            	TUtils::preencherObjeto( $objeto, $_POST );
	                $result = $objeto->cadastrar(); 
                    //Verificando o resultado do cadastro
	                if ($result !== TRUE){
	                	if ($result == 2)
	                		throw new Exception('LOGIN INVÁLIDO: Já existe um usuário ativo com o LOGIN informado.');
	                	if ($result == 3){	                	    	                		
	                		$reativacao = TRUE;
	                		
	                		//Carregando os dados do operador
	                		$obj = new Operador();	                			                		
	                		$criterio = array();
				        	$criterio['precondicao'] = " login like '". strtoupper($_POST['txtlogin']) . "'";
				        	$result = $obj->listar( $criterio );				        	
				        	$objeto =  pg_fetch_object($result);
				        	$id = $objeto->operadorid;				        	
				        	$message = 'alteracao';				        	
	                	}
	                }else{
	                	$message = ( $id ) ? 'alteracao' : 'insercao';
	                    $id = $objeto->operadorid;	                
	                } 	                
	                break;
	            case "Excluir":
	                header( 'Location: pesquisar.php?method=excluir&id=' . $_POST['id']);
	                break;
	                
	            case "Reativar":
	            	$objeto = new Operador($_POST['id']);           			            		
	            	TUtils::preencherObjeto( $objeto, $_POST );	                	            	               
	                $objeto->reativar();	                
	                
	                $message = 'alteracao';	                
	                $id = $objeto->operadorid;	                
	                
	            break;
	            
	            case "Resetar Senha":
	                $objeto = new Operador($_POST['id']);
	                $objeto->resetarSenha();	                
	                $message = 'alteracao';	                                	                
	            break;
	        }
	        
	        if(!$reativacao)
	            header( 'Location: cadastrar.php?message=' . $message . '&id=' . $id);
	        else 
	            header( 'Location: cadastrar.php?message=' . $message . '&id=' . $id .'&reativacao=ok');
	        
	    }
	    
	} catch(exception $e){
		
		$erro = $e->getMessage();
		
	}
   
?>